import java.security.interfaces.*;
import java.math.*;
import java.io.*;

public class Enc_RSA {
    public static void main(String[] args) throws Exception {
        String s = "Hello World!";
        /**获取公钥及参数e,n*/
        FileInputStream f = new FileInputStream("Skey_RSA_pub.dat");
        ObjectInputStream b = new ObjectInputStream(f);
        RSAPublicKey pbk = (RSAPublicKey) b.readObject();
        BigInteger e = pbk.getPublicExponent();
        BigInteger n = pbk.getModulus();
        System.out.println("e= " + e);
        System.out.println("n= " + n);
        /** 明文 m*/
        byte[] ptext = s.getBytes("UTF8");
        BigInteger m = new BigInteger(ptext);
        /** 计算密文c,打印*/
        BigInteger c = m.modPow(e, n);
        System.out.println("c= " + c);
        /**保存密文*/
        String cs = c.toString();
        BufferedWriter out =
                new BufferedWriter(new OutputStreamWriter(
                        new FileOutputStream("Enc_RSA.dat")));
        out.write(cs, 0, cs.length());
        out.close();

    }
}